<html>
<body>
<p>Reports potentially unsafe calls of inline functions with flexible nullable (platform type with unknown nullability) extension receivers.</p>
<p>
    Before Kotlin 1.2, calls of <code>inline fun</code> with flexible nullable extension receiver (a platform type with an unknown
    nullability) did not include nullability checks in bytecode. Since Kotlin 1.2, nullability checks are included into the bytecode
    (see <a href="https://youtrack.jetbrains.com/issue/KT-12899">KT-12899</a>).
</p>
<p>
    It's recommended to add an explicit <code>!!</code> you want an exception to be thrown,
    or consider changing the function's receiver type to nullable if it should work without exceptions.
</p>
<p><b>Example:</b></p>
<pre><code>
  inline fun String.removePrefix(prefix: String): String {
      return this.substring(prefix.length)
  }

  fun main() {
      // `System.getProperty` returns not denotable `String!` type
      val property = System.getProperty("user.dir")
      println(property.removePrefix("/home"))
  }
</code></pre>
<p>After the quick-fix is applied:</p>
<pre><code>
  inline fun String.removePrefix(prefix: String): String {
      return this.substring(prefix.length)
  }

  fun main() {
      // `System.getProperty` returns not denotable `String!` type
      val property = System.getProperty("user.dir")
      println(property!!.removePrefix("/home"))
  }
</code></pre>
<!-- tooltip end -->
<p>This inspection only reports if the Kotlin language level of the project or module is lower than 1.2.</p>
</body>
</html>